#ifndef CVERTEXBUFFEROGL_H_INCLUDED
#define CVERTEXBUFFEROGL_H_INCLUDED

#include "IVertexBuffer.h"

/// IVertexBuffer Infromation
class CVertexBufferOGL : public IVertexBuffer {
private:
	uint  m_uiOGLVertexBuffer;

public:
	void Bind( ui16 stage = 0 );

	void Draw( VERTEX_PRIMITIVE_TYPE type, uint start, uint length );
	void DrawIndexed( VERTEX_PRIMITIVE_TYPE type, IVertexBuffer* indices, uint start, uint length );
	void DrawInstanced( VERTEX_PRIMITIVE_TYPE type, uint start, uint length, IVertexBuffer* instances );
	void DrawIndexedInstanced( VERTEX_PRIMITIVE_TYPE type, IVertexBuffer* indices, uint start, uint length, IVertexBuffer* instances );

	void Draw( );
	void DrawIndexed( IVertexBuffer* indices );
	void DrawInstanced( IVertexBuffer* instances );
	void DrawIndexedInstanced( IVertexBuffer* indices, IVertexBuffer* instances );

			   // IVertexBuffer Constructor & Virtual Destructor
			   CVertexBufferOGL( VERTEX_PRIMITIVE_TYPE type, uint length, byte* data, int format, int flags = eDBF_DEFAULT_SETTINGS );
	virtual ~CVertexBufferOGL( );
};


#endif // CVERTEXBUFFEROGL_H_INCLUDED
